/**
 * <strong>Title : WorkUnitService.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.cm.service<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2015年9月24日 上午11:25:04<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.cm.service;

import java.util.List;

import cn.b.sky.mes.cm.model.WorkUnit;
import cn.b.sky.mes.cm.model.WorkUnitType;
import cn.b.sky.mes.cm.model.condition.WorkUnitTypeCondition;
import cn.b.sky.common.model.BatchJobReport;

/**
 * <strong>Title : WorkUnitService.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.cm.service<br>
 * </strong> <strong>Description : </strong>@工作单元类型 服务 提供增删改查@<br>
 * <strong>Create on : 2015年9月24日 上午11:25:04<br>
 * </strong>
 * <p>
 * 
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface WorkUnitTypeService {

  /**
   * <strong>Title : selectWorkUnitTypeList<br>
   * </strong> <strong>Description : </strong>@获取工作单元类型列表，可带条件模糊查询@<br>
   * <strong>Create on : 2015年9月24日 下午12:53:37<br>
   * </strong>
   * <p>
   * 
   * @param workUnitTypeCondition
   * @return List<WorkUnitType>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitType> selectWorkUnitTypeList(WorkUnitTypeCondition workUnitTypeCondition);

  /**
   * <strong>Title : getWorkUnitTypeCount<br>
   * </strong> <strong>Description : </strong>@获取工作单元类型数据条数@<br>
   * <strong>Create on : 2015年9月24日 下午12:53:47<br>
   * </strong>
   * <p>
   * 
   * @param workUnitTypeCondition
   * @return int
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkUnitTypeCount(WorkUnitTypeCondition workUnitTypeCondition);

  /**
   * <strong>Title : getWorkUnitType<br>
   * </strong> <strong>Description : </strong>@根据id获取工作单元类型实体@<br>
   * <strong>Create on : 2015年9月24日 下午12:53:59<br>
   * </strong>
   * <p>
   * 
   * @param id
   * @return WorkUnitType
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkUnitType getWorkUnitType(String id, String siteCode);

  /**
   * <strong>Title : insertWorkUnitType<br>
   * </strong> <strong>Description : </strong>@插入作业单元类型@<br>
   * <strong>Create on : 2015年9月24日 下午12:54:34<br>
   * </strong>
   * <p>
   * 
   * @param workUnitType
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertWorkUnitType(WorkUnitType workUnitType);

  /**
   * <strong>Title : updateWorkUnitType<br>
   * </strong> <strong>Description : </strong>@编辑，更新作业单元类型@<br>
   * <strong>Create on : 2015年9月24日 下午12:54:43<br>
   * </strong>
   * <p>
   * 
   * @param workUnitType
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateWorkUnitType(WorkUnitType workUnitType);

  /**
   * <strong>Title : deleteWorkUnitTypes<br>
   * </strong> <strong>Description : </strong>@删除作业单元类型@<br>
   * <strong>Create on : 2015年9月24日 下午12:54:51<br>
   * </strong>
   * <p>
   * 
   * @param workUnitTypes
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   * @return
   */
  BatchJobReport deleteWorkUnitTypes(String workUnitTypeCode, String siteCode);

  /**
   * <strong>Title : getWorkUnitTypeExactCount<br>
   * </strong> <strong>Description : </strong>@获取同一工厂作业单元类型总数@<br>
   * <strong>Create on : 2015年9月24日 下午7:09:19<br>
   * </strong>
   * <p>
   * 
   * @param workUnitTypeCondition
   * @return int
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkUnitTypeExactCount(WorkUnitTypeCondition workUnitTypeCondition);

  /**
   * <strong>Title : getWorkUnitType<br>
   * </strong> <strong>Description : </strong>@根据条件获得作业单元类型实体@<br>
   * <strong>Create on : 2015年9月24日 下午7:15:56<br>
   * </strong>
   * <p>
   * 
   * @param workUnitTypeCondition
   * @return WorkUnitType
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkUnitType getWorkUnitType(WorkUnitTypeCondition workUnitTypeCondition, String siteCode);

  /**
   * <strong>Title : insertWorkUnitTypeAssign<br>
   * </strong> <strong>Description : </strong>@插入作业单元类型分配@<br>
   * <strong>Create on : 2015年9月28日 下午9:06:44<br>
   * </strong>
   * <p>
   * 
   * @param workUnitType
   * @param workUnitIds
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertWorkUnitTypeAssign(WorkUnitType workUnitType, String[] workUnitIds, String siteCode);

  /**
   * <strong>Title : selectAssignByUnitType<br>
   * </strong> <strong>Description : </strong>根据作业单元编号，查询作业单元分配表<br>
   * <strong>Create on : 2015年9月29日 上午9:19:09<br>
   * </strong>
   * <p>
   * 
   * @param id
   * @return List<WorkUnitTypeAssign>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnit> selectAssignByUnitType(String id, String siteCode);

  /**
   * <strong>Title : updateWorkUnitTypeAssign<br>
   * </strong> <strong>Description : </strong>@方法注释说明写在此处@<br>
   * <strong>Create on : 2015年9月29日 上午10:38:59<br>
   * </strong>
   * <p>
   * 
   * @param workUnitType
   * @param workUnitIds
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateWorkUnitTypeAssign(WorkUnitType workUnitType, String[] workUnitIds, String siteCode);

  /**
   * <strong>Title : selectAssignByUnit<br>
   * </strong> <strong>Description : </strong>@根据作业单元id获取assign中作业类型列表@<br>
   * <strong>Create on : 2015年9月29日 下午1:34:07<br>
   * </strong>
   * <p>
   * 
   * @param id
   * @return List<WorkUnitType>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitType> selectAssignByUnit(String id, String siteCode);

  /**
   * <strong>Title : deleterAssignByUnitType<br>
   * </strong> <strong>Description : </strong>@方法注释说明写在此处@<br>
   * <strong>Create on : 2015年9月29日 下午5:03:35<br>
   * </strong>
   * <p>
   * 
   * @param workUnit
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleterAssignByUnit(WorkUnit workUnit, String siteCode);

  /**
   * <strong>Title : deleterAssignByUnitType<br>
   * </strong> <strong>Description : </strong>根据作业单元类型，删除作业单元分配表<br>
   * <strong>Create on : 2015年9月29日 下午5:10:39<br>
   * </strong>
   * <p>
   * 
   * @param workUnitType
   *            void
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleterAssignByUnitType(WorkUnitType workUnitType, String siteCode);

  /**
   * 
   * <strong>Title : getUnlockWorkUnitTypes<br>
   * </strong> <strong>Description : </strong>获取未锁定的工作单元类型<br>
   * <strong>Create on : 2015-10-6 下午1:12:10<br>
   * </strong>
   * <p>
   * 
   * @return List<WorkUnitType>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitType> getUnlockWorkUnitTypes();

  /**
   * 
   * <strong>Title : selectWorkUnitTypeSuggests<br>
   * </strong> <strong>Description : </strong>工作单元类型搜索建议<br>
   * <strong>Create on : 2016年4月11日 下午7:19:59<br>
   * </strong>
   * <p>
   * 
   * @param condition
   * @return List<WorkUnitType>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitType> selectWorkUnitTypeSuggests(WorkUnitTypeCondition condition);

}
